/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package xenon3d.scene.animators;

/**
 * Animates a scene node. Scene node animators can animate position, rotation,
 * material, and other scene node properties.
 * @author Volker Everts
 */
public abstract class SceneNodeAnimator {

    // <editor-fold defaultstate="collapsed" desc=" Private Fields ">

    /** The enable flag. */
    private boolean enable;

    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc=" Public Properties ">

    /**
     * Enables or disables this scene node animator.
     * @param enable if true, the scene node animator will be enabled
     */
    public void setEnabled(boolean enable) {
        this.enable = enable;
    }

    /**
     * Returns whether this scene node animator is enabled.
     * @return true, if this animator is enabled
     */
    public boolean isEnabled() {
        return enable;
    }

    /**
     * Returns whether the animator is currently active.
     * @return true, if the animator is currently active
     */
    public abstract boolean isActive();

    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc=" Public Methods ">

    /**
     * Initializes a scene node with the animation start values.
     * 
     */
    /**
     * Animates a scene node.
     * @param node the scene node to animate
     * @param deltaTime the current delta time
     */
    public abstract void animate(SceneNode node, float deltaTime);

    // </editor-fold>

} // end class SceneNodeAnimator
